home *** CD-ROM | disk | FTP | other *** search
/ Programmer Plus 2007 / Programmer-Plus-2007.iso / Programming / SQL and Data Base / Logic Works ERwin 3.5 / data.1 / erwattin.six < prev    next >
Encoding:
Text File  |  1998-01-28  |  5.6 KB  |  175 lines

  1. /* ------------------------------------------------------------------------
  2. --    ERWATTIN.SIX                                                          --
  3. --    Copyright (C) Logic Works, Inc. 1994                                 --
  4. --                                                                       --
  5. --  Stored function to insert ERwin attributes the Designer 2000         --
  6. --  dictionary                                                               --
  7. ------------------------------------------------------------------------- */
  8. CREATE OR REPLACE FUNCTION ERWATTIN(pEntName CI_ENTITIES.NAME%TYPE    ,
  9.                             pName CI_ATTRIBUTES.NAME%TYPE,
  10.                             pFormat  CI_ATTRIBUTES.FORMAT%TYPE,
  11.                             pMaxLen CI_ATTRIBUTES.MAXIMUM_LENGTH%TYPE,
  12.                             pOptional CI_ATTRIBUTES.NULL_VALUE%TYPE,
  13.                             pPrecision CI_ATTRIBUTES.PRECISION%TYPE,
  14.                             pDomain  CI_DOMAINS.NAME%TYPE,
  15.                             pApp     CI_APPLICATION_SYSTEMS.NAME%TYPE,
  16.                             pVersion CI_APPLICATION_SYSTEMS.VERSION%TYPE)
  17.         RETURN CI_ATTRIBUTES.ID%TYPE
  18.         AS
  19.         TYPE recEntity IS RECORD
  20.             (APPLICATION_SYSTEM_OWNED_BY   CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY%TYPE,
  21.              ID CI_ENTITIES.ID%TYPE,
  22.              NAME CI_ENTITIES.NAME%TYPE);
  23.         TYPE recAttribute IS RECORD
  24.             (ENTITY_REFERENCE CI_ATTRIBUTES.ENTITY_REFERENCE%TYPE,
  25.              ID                  CI_ATTRIBUTES.ID%TYPE,
  26.              NAME              CI_ATTRIBUTES.NAME%TYPE);
  27.         TYPE recDomain IS RECORD
  28.             (APPLICATION_SYSTEM_OWNED_BY    CI_DOMAINS.APPLICATION_SYSTEM_OWNED_BY%TYPE,
  29.              DATATYPE        CI_DOMAINS.DATATYPE%TYPE,
  30.              FORMAT            CI_DOMAINS.FORMAT%TYPE,
  31.              ID                CI_DOMAINS.ID%TYPE,
  32.              NAME            CI_DOMAINS.NAME%TYPE);
  33.         prAttribute        recAttribute;
  34.         stAttribute        cioattribute.data;
  35.         prDomain        recDomain;
  36.         prEntity        recEntity;
  37.         DomainRef        CI_DOMAINS.ID%TYPE;
  38.         EntityRef        CI_ENTITIES.ID%TYPE;
  39.         workingAppID    CI_APPLICATION_SYSTEMS.ID%TYPE;
  40.           act_status        varchar2(100);
  41.         act_warnings    varchar2(100);
  42. BEGIN
  43.         if cdapi.initialized = false then
  44.             RETURN -1;
  45.         end if;
  46.         BEGIN
  47.             IF pVersion = 0 THEN
  48.                 SELECT APPLICATION_SYSTEM_OWNED_BY, ID, NAME INTO prEntity
  49.                     FROM CI_ENTITIES
  50.                     WHERE    CI_ENTITIES.NAME=UPPER(pEntName) 
  51.                     AND CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY =
  52.                     (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE 
  53.                     CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
  54.                     CI_APPLICATION_SYSTEMS.LATEST_VERSION_FLAG='Y');
  55.             ELSE
  56.                 SELECT APPLICATION_SYSTEM_OWNED_BY, ID, NAME INTO prEntity
  57.                     FROM CI_ENTITIES
  58.                     WHERE    CI_ENTITIES.NAME=UPPER(pEntName) 
  59.                     AND CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY =
  60.                     (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE 
  61.                     CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
  62.                     CI_APPLICATION_SYSTEMS.VERSION=pVersion);
  63.             END IF;    
  64.             EntityRef := prEntity.ID;
  65.         EXCEPTION
  66.             WHEN OTHERS THEN
  67.                 RETURN -1;
  68.         END;            
  69.         BEGIN
  70.           IF pDomain IS NOT NULL THEN
  71.             IF pVersion = 0 THEN 
  72.                 SELECT APPLICATION_SYSTEM_OWNED_BY,DATATYPE,FORMAT,ID,NAME INTO prDomain
  73.                     FROM CI_DOMAINS
  74.                     WHERE    CI_DOMAINS.NAME = UPPER(pDomain) 
  75.                     AND CI_DOMAINS.APPLICATION_SYSTEM_OWNED_BY = 
  76.                     (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE 
  77.                     CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
  78.                     CI_APPLICATION_SYSTEMS.LATEST_VERSION_FLAG='Y');
  79.             ELSE
  80.                 SELECT APPLICATION_SYSTEM_OWNED_BY,DATATYPE,FORMAT,ID,NAME INTO prDomain
  81.                     FROM CI_DOMAINS
  82.                     WHERE    CI_DOMAINS.NAME = UPPER(pDomain) 
  83.                     AND CI_DOMAINS.APPLICATION_SYSTEM_OWNED_BY = 
  84.                     (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE 
  85.                     CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
  86.                     CI_APPLICATION_SYSTEMS.VERSION=pVersion);
  87.             END IF;
  88.             DomainRef := prDomain.ID;
  89.           ELSE
  90.               DomainRef := -1;
  91.           END IF;        
  92.         EXCEPTION
  93.             WHEN OTHERS THEN
  94.                 DomainRef := -1;                        
  95.         END;            
  96.         IF DomainRef != -1 THEN
  97.             stAttribute.v.DOMAIN_REFERENCE := DomainRef;
  98.             stAttribute.i.DOMAIN_REFERENCE := true;
  99.         END IF;                    
  100.         stAttribute.v.ENTITY_REFERENCE := EntityRef;
  101.         stAttribute.i.ENTITY_REFERENCE := true;
  102.         stAttribute.v.NAME := pName;
  103.         stAttribute.i.NAME := true;
  104.         stAttribute.v.FORMAT := pFormat;
  105.         stAttribute.i.FORMAT := true;
  106.         stAttribute.v.MAXIMUM_LENGTH := pMaxLen;
  107.         stAttribute.i.MAXIMUM_LENGTH := true;
  108.         stAttribute.v.OPTIONAL_FLAG := pOptional;
  109.         stAttribute.i.OPTIONAL_FLAG := true;
  110.         stAttribute.v.PRECISION  := pPrecision;
  111.         stAttribute.i.PRECISION  := true;
  112.         SELECT ENTITY_REFERENCE, ID, NAME INTO prAttribute
  113.                 FROM CI_ATTRIBUTES
  114.                 WHERE    CI_ATTRIBUTES.NAME=UPPER(pName) 
  115.                 AND CI_ATTRIBUTES.ENTITY_REFERENCE = EntityRef;
  116.         stAttribute.v.ID := prAttribute.ID;
  117.         stAttribute.i.ID := true;
  118.         BEGIN
  119.             cdapi.open_activity;
  120.             cioattribute.upd(prAttribute.ID,stAttribute);
  121.             cdapi.validate_activity(act_status, act_warnings);
  122.             cdapi.close_activity(act_status);
  123.             if act_status != 'Y' then
  124.                 cdapi.abort_activity;
  125.                 RETURN -1;
  126.             else
  127.                 RETURN stAttribute.v.ID;
  128.             end if;
  129.         EXCEPTION
  130.             WHEN OTHERS THEN
  131.                 if cdapi.stacksize > 0 then 
  132.                     if cdapi.activity is not null then 
  133.                         cdapi.abort_activity;
  134.                     end if;
  135.                 else
  136.                     if cdapi.activity is not null then 
  137.                         cdapi.abort_activity;
  138.                     end if;
  139.                 end if;
  140.                 RETURN  -1;
  141.         END;
  142. EXCEPTION
  143.         WHEN NO_DATA_FOUND THEN
  144.         BEGIN
  145.             cdapi.open_activity;
  146.             cioattribute.ins(null,stAttribute);
  147.             cdapi.validate_activity(act_status, act_warnings);
  148.             cdapi.close_activity(act_status);
  149.             if act_status != 'Y' then
  150.                 cdapi.abort_activity;
  151.                 RETURN -1;
  152.             else
  153.                 RETURN stAttribute.v.ID;
  154.             end if;    
  155.         EXCEPTION
  156.             WHEN OTHERS THEN
  157.                 if cdapi.stacksize > 0 then 
  158.                     if cdapi.activity is not null then 
  159.                         cdapi.abort_activity;
  160.                     end if;
  161.                 else
  162.                     if cdapi.activity is not null then 
  163.                         cdapi.abort_activity;
  164.                     end if;
  165.                 end if;
  166.                 RETURN  -1;
  167.         END;
  168.         WHEN OTHERS THEN
  169.             if cdapi.activity is not null then
  170.                 cdapi.abort_activity;
  171.             end if;
  172.             RETURN -1;
  173. END ERWATTIN;
  174. /
  175.